<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //1 问
       // console.log(num); //num is not defined
       
    // 2.问
     console.log(num1);//undefined
     var num1 = 10;
    
    // 3问
    function fn (){
        console.log(11);
    }
    fn();
    
    //4问
    skill();
    var skill = function (){
        console.log(22);
    }
    
    /* 
    1. js 执行引擎运行代码分两步， 先预解析， 在执行代码。
    预解析 ： 遇到varfunc 关键字的声明 ， 把声明提升到当前作用域的最前面。
    然后，代码从上往下执行。
    2. 预解析分为变量预解析（变量提升）和函数预解析（函数提升）
    变量提升： 遇到var 声明的变量，把声明提升到当前作用域的最前面，而不是提升赋值。
    函数提升： 遇到 func 声明的函数， 把声明提升到当前作用域的最前面，不调用。
     */
    </script>

</body>
</html>